package si.yun.service;

import si.yun.entity.SyBeforeUser;
import si.yun.entity.SyCourse;
import si.yun.entity.SyUserAddress;
import si.yun.entity.SyUserFeedback;

import java.util.List;
import java.util.Map;

/**
 * @program: ThinkManage
 * @description: 个人中心业务接口
 * @author: 崔晓晨
 * @create: 2021-10-20 14:10
 **/
public interface PersonalService {
    //查询课程浏览记录
    List<Map<String,Object>> selWatchCourse(Integer userId);
    //批量删除观看记录
    Integer delWatchCourse(List<Integer> ids);
    //获取订单信息
    List<Map<String,Object>> selOrderInfo(Integer userId,Integer orderStatus,Integer comment);
    //获取商品的订单信息
    Map<String, Object> getProductOrderInfo(Integer orderId, Integer productId, Integer orderType);
    //更改订单状态
    Integer updRefundStatus(Integer orderId,Integer orderStatus);
    //获取优惠券的列表信息 未使用
    List<Map<String,Object>> selCouponListInfo(Integer state,Integer UserId);
    //获取优惠券的列表信息 已使用
    List<Map<String,Object>> selCouponUsed(Integer state,Integer UserId);
    //selExpiredCouponInfo  获取已过期的优惠券信息
    List<Map<String,Object>> selExpiredCouponInfo(Integer state,Integer UserId);
    //添加播放记录
    Integer addPlayWatch(Integer userId, Integer courseId, String courseName,Integer studyDate);
    //查看用户收藏记录
    List<Map<String,Object>> selUserCollection(Integer userId);
    //获取用户购买的课程信息
    List<Map<String,Object>> selBuyCourse(Integer userId);
    //获取当前用户是否认证过创作者
    Map<String,Object> selApplyRecord(Integer userId);
    //获取课程的分类
    List<Map<String,Object>> selCourseClass();
    //添加课程 (或者保存为草稿状态)
    Integer addCourseInfo(SyCourse course);
    //获取个人创作的课程
    List<Map<String,Object>> selCreationCourse(Integer userId);
    //修改课程信息
    Integer updCourseInfo(Map<String,Object> map);
    //获取认证信息
    Map<String,Object> selReviewInfo(Integer userId);
    //添加审核创作者
    Integer addCreateUser(Map<String,Object> map);
    //获取系统最新通知信息
    Map<String,Object> selNoteNewInfo(Integer userId);
    //获取所有的系统通知
    List<Map<String,Object>> selAllNotesInfo(Integer userId);
    //获取未读消息数量
    Map<String,Object> selNoteNum(Integer userId);
    //批量更新消息状态信息
    Integer updNoteStatus(Integer id);
    //获取前台用户的默认地址信息
    Map<String,Object> getUserAddressIsDefault(Integer userId);
    //修改用户的手机号
    Integer setUserPhone(Integer userId,String phone);
    //修改用户的密码
    Integer setUserPassword(Integer userId,String password);
    //添加用户的身份证和真实姓名
    SyBeforeUser setUserReal(Integer userId, String realName, String idCard);
    //查看用户的所有收货地址
    List<Map<String,Object>> getUserAddress(Integer userId);
    //通过id查看收货地址
    Map<String,Object> getUserAddres(Integer addressId);
    //修改用户当前地址是否为默认状态
    Integer setDefaultAddress(Integer userId,Integer addressId,String isDefault);
    //省市区的获取
    List<Map<String,Object>> getRegion(Integer id);
    //添加用户地址
    Integer addUserAddress(SyUserAddress userAddress);
    //通过id删除用户地址
    Integer removeUserAddress(Integer addressId);
    //修改用户地址
    Integer setUserAddress(SyUserAddress userAddress);
    //添加用户意见反馈
    Integer addUserFeedback(SyUserFeedback userFeedback);
    //获取个人微圈
    List<Map<String, Object>> selMicroCircleOwnData(Integer userId);
    //获取用户学习时长以及消费记录
    Map<String,Object> selStudyMoney(Integer userId);
    //通过id查看用户数据
    SyBeforeUser getUserInfo(Integer userId);
    //修改初次注册用户手机号
    Integer setRegisterUserPhone(Integer userId,String phone);
    //获取当前订单是否使用了优惠券
    Map<String,Object> selOrderCouponNum(Integer orderId,Integer userId);
    //获取优惠券的详细信息
    Map<String, Object> selCouponInfo(Integer orderId,Integer userId);
    //判断手机是否已被注册
    Integer getPhoneExist(String phone);
    //通过用户上传身份证证件照片获取信息修改用户的实名认证
    SyBeforeUser setUserRealByImg(Integer userId,String frontPath,String backPath);
    //更新最新的APP版本
    Map<String,Object> selAppVersion();
    //删除草稿视频
    Integer delCourseNutton(Integer courseId);
    //查询商品的详情信息
    Map<String,Object> selProductInfoes(Integer productId);
    //查询指定分类下的商品
    List<Map<String,Object>> selClassProductInfoes(Integer categoryId,Integer productId);
    //获取评论的数量
    Map<String,Integer> selCommentProductNum(Integer productId);
    //获取商品下的评论
    List<Map<String,Object>> selproductComments(Integer productId,Integer userId);
    //点赞评论
    Integer addProductCommentLike(Integer commentId,Integer userId,Integer productId);
    //取消评论
    Integer delProductCommentLike(Integer commentId,Integer userId,Integer productId);
    //添加留言
    Integer addProductCommentInfo(Integer userId, Integer productId, String content);
    //删除个人评论 更改状态为删除
    Integer updProductCommentStatusDel(Integer commentId,Integer userId,Integer productId);
    //判断商品是否收藏
    Integer selProductColCourseIF(Integer userId,Integer productId);
    //收藏商品
    Integer addProductColCourseInfo(Integer userId,Integer productId);
    //取消收藏
    Integer delProductColCourseInfo(Integer userId,Integer productId);
    //获取购物车的商品数量
    Map<String,Object> selShoppingCart(Integer userId);
    //获取购物车的详细信息
    List<Map<String,Object>> selShopChartInfo(Integer userId);
    //更新购物车的商品数量
    Integer updShopChartNum(Integer shoppingCartId,Integer productNum);
    //批量删除购物车
    Integer deleteShoppingCart(List<Integer> list);
    //添加购物车
    Integer addShoppingCart(Integer userId,Integer productId);
    //判断当前用户是否添加指定商品到购物车
    Integer selShopProduct(Integer userId, Integer productId);
    //获取微商城
    List<Map<String, Object>> selMicroMall();
    //获取购物车下对应的商品
    Integer selshopProductId(Integer shoppingCartId);
    //获取商品订单所需要的信息
    Map<String,Object> selOrderProInfo(Integer productId,Integer shoppingCartId);
}
